"""
!/usr/bin/env python
-*- coding: utf-8 -*-
@Author  : MarkJia
@Site    : 
@File    : 6、常见控件交互方法.py
"""
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

"""
web交互：
1。 元素的操作
2.  获取元素的属性信息
"""

# 先用 find_element 对元素定位(find)，其次是对元素进行操作（operate）
"""
点击  ->  click()
清空  ->  clear()
输入  ->  send_keys("text")
获取属性值 -> get_attribute("属性名")
获取元素属性信息的方法：
    获取定位元素对象的文本信息
    获取元素的属性（html属性值）

"""


# 元素操作
def test_element_interaction():
    """
    元素的点击/输入/清空
    :return:
    1. 实例化 driver 对象
    2. 打开网页
    3. 定位到输入框进行输入
    4. 对输入框进行清空
    5. 再次输入
    6. 点击搜索按钮
    7. 断言
    """
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    # 对输入框输入内容
    driver.find_element(By.ID, 'kw').send_keys('python')
    time.sleep(2)
    # 用find定位到输入框，并对输入框进行清空操作
    driver.find_element(By.ID, 'kw').clear()
    time.sleep(1)
    # 再次输入内容
    driver.find_element(By.ID, 'kw').send_keys('web自动化')
    # 对搜索按钮进行点击
    driver.find_element(By.ID, 'su').click()
    time.sleep(2)
    assert driver.title == 'web自动化_百度搜索'


# ===============================   获取元素属性信息:定位到元素后，获取元素的文本信息，属性信息 =======================
# ================================   根据这些信息进行断言和调式  =================================
def test_element_get_attr():
    """
    1. 实例化 driver
    2. 打开网页
    3. 定位一个元素
    4. 打印该元素对象
    5. 获取该元素对象的文本和属性
    """
    driver = webdriver.Chrome()
    driver.get('https://vip.ceshiren.com/#/ui_study')
    # 定位到一个元素
    web_element = driver.find_element(By.ID, 'locate_id')
    # 打印这个元素对象
    # 结果为：<selenium.webdriver.remote.webelement.WebElement (session="b49fbc7edacdd38ed9a92f8063f50d58", element="fe2a553d-4040-41a1-956c-6dffb2e1a169")>
    print(web_element)

    # 常用的属性
    # ============================   获取元素的文本信息，不是每个元素都含有文本信息   ==================================
    print(web_element.text)  # 结果为 ： 元素定位。与 html 中该元素的 文本信息 完全一致。结果为（元素定位）

    # =================   获取元素的属性信息：前端会加业务逻辑有关的  title = 'xxx' ==========================
    name = web_element.get_attribute('name')
    print(name)  # 结果为：locate。与 html 中该元素的 name 属性完全一致
    id = web_element.get_attribute('id')
    print(id)  # 结果为 ： locate_id
